import axios from "axios";
import baseURL from "./env.js";
import { ElMessage } from "element-plus";

//创建axios实例

const instance = axios.create({
  baseURL,
  timeout: 5000 //5s超时时长
});

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    config.headers.Authorization = sessionStorage.getItem("token");
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    if (response.status == 200) {
      //直接将接口数据转换为promise对象返回
      //获取接口状态
      if (response.data.code == 200) {
        //说明接口处理正常
        return Promise.resolve(response.data);
      } else {
        //接口处理异常
        ElMessage.error(response.data.msg);
        return Promise.resolve(response.data);
      }
    }
    return response;
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

export default {
  /**
   * get请求 查询
   * @param {Object} url  接口地址
   * @param {Object} params 参数对象
   */
  get(url, params) {
    return instance.get(url, { params });
  },

  /**
   * post请求 新增
   * @param {Object} url  接口地址
   * @param {Object} data  json对象
   */
  post(url, data) {
    return instance.post(url, data);
  },

  /**
   * put请求 修改
   * @param {Object} url  接口地址
   * @param {Object} data json对象
   */
  put(url, data) {
    return instance.put(url, data);
  },
  /**
   * delete请求 删除
   * @param {Object} url 接口地址
   * @param {Object} id  要删除的id值
   */
  delete(url, id) {
    return instance.delete(url, { params: { id } });
  }
};
